// 管理页框的内核数据结构
//struct page
//{
//    /* 原⼦标志，有些情况下会异步更新 */
//    unsigned long flags;
//    union
//    {
//        struct
//        {
//            /* 换出⻚列表，例如由zone->lru_lock保护的active_list */
//            struct list_head lru;
//            /* 如果最低为为0，则指向inode
//             * address_space，或为NULL
//             * 如果⻚映射为匿名内存，最低为置位
//             * ⽽且该指针指向anon_vma对象
//             */
//            struct address_space *mapping;
//            /* 在映射内的偏移量 */
//            pgoff_t index;
//            /*
//             * 由映射私有，不透明数据
//             * 如果设置了PagePrivate，通常⽤于buffer_heads
//             * 如果设置了PageSwapCache，则⽤于swp_entry_t
//             * 如果设置了PG_buddy，则⽤于表⽰伙伴系统中的阶
//             */
//            unsigned long private;
//        };
//        struct
//        { /* slab, slob and slub */
//            union
//            {
//                struct list_head slab_list; /* uses lru */
//                struct
//                { /* Partial pages */
//                    struct page *next;
//#ifdef CONFIG_64BIT
//                    int pages;    /* Nr of pages left */
//                    int pobjects; /* Approximate count */
//#else
//                    short int pages;
//                    short int pobjects;
//#endif
//                };
//            };
//            struct kmem_cache *slab_cache; /* not slob */
//            /* Double-word boundary */
//            void *freelist; /* first free object */
//            union
//            {
//                void *s_mem;            /* slab: first object */
//                unsigned long counters; /* SLUB */
//                struct
//                {                        /* SLUB */
//                    unsigned inuse : 16; /* ⽤于SLUB分配器：对象的数⽬ */
//                    unsigned objects : 15;
//                    unsigned frozen : 1;
//                };
//            };
//        };
//        ...
//    };
//    union
//    {
//        /* 内存管理⼦系统中映射的⻚表项计数，⽤于表⽰⻚是否已经映射，还⽤于限制逆向映射搜
//       索*/
//        atomic_t _mapcount;
//        unsigned int page_type;
//        unsigned int active; /* SLAB */
//        int units;           /* SLOB */
//    };
//    ...
//#if defined(WANT_PAGE_VIRTUAL)
//        /* 内核虚拟地址（如果没有映射则为NULL，即⾼端内存） */
//        void *virtual;
//#endif /* WANT_PAGE_VIRTUAL */
//    ...
//}
